package com.itheima.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Integer id; // ID
    @NotBlank(message = "姓名不能为空")
    @Size(min = 2, max = 10, message = "姓名长度在2-10位之间")
    private String name; // 姓名
    @NotBlank(message = "学号不能为空")
    @Size(min = 6, max = 12, message = "学号长度在6-12位之间")
    private String no; // 学号
    @NotNull(message = "性别不能为空")
    private Integer gender; // 性别 , 1: 男 , 2 : 女
    @NotNull(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone; // 手机号
    @NotBlank(message = "身份证号不能为空")
    @Pattern(regexp = "^\\d{17}[0-9X]$", message = "身份证号格式不正确")
    private String idCard; // 身份证号
    @NotNull(message = "是否来自院校不能为空")
    private Integer isCollege; // 是否来自于院校, 1: 是, 0: 否
    private String address; // 联系地址
    private Integer degree; // 最高学历, 1: 初中, 2: 高中 , 3: 大专 , 4: 本科 , 5: 硕士 , 6: 博士
    private LocalDate graduationDate; // 毕业时间
    private Integer clazzId; // 班级ID
    private Short violationCount; // 违纪次数
    private Short violationScore; // 违纪扣分
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime; // 创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime; // 修改时间

    private String clazzName; // 班级名称
}
